class ComponentesEmpreendimentoController < ApplicationController

  filter_access_to :index, :new,  :create, :attribute_check => true, :load_method => :get_nested
  filter_access_to :show, :edit,  :update, :destroy, :attribute_check => true, :load_method => :get_not_nested
  before_filter    :check_dates,  :only => [:create, :update]
  before_filter    :get_conselho, :only => [:index, :new, :edit, :show]

  def index
    @componentes = @empreendimento.componentes_empreendimento.find(:all, :conditions => {:conselho => @conselho})
    redirect_to :action => "new", :conselho => @conselho if @componentes.empty? && @pleito.inscrevendo?
  end

  def new
    @componente = @empreendimento.componentes_empreendimento.new(:conselho => @conselho)
  end

  def create
    @componente = @empreendimento.componentes_empreendimento.new(params[:componente_empreendimento])

    if @componente.save
      flash[:notice] = 'Componente cadastrado com sucesso.'
      redirect_to pleito_empreendimento_componentes_empreendimento_path(@pleito, :conselho => @componente.conselho)
    else
      render :action => "new"
    end
  end

  def update
    if @componente.update_attributes(params[:componente_empreendimento])
      flash[:notice] = 'Componente atualizado com sucesso.'
      redirect_to pleito_empreendimento_componentes_empreendimento_path(@pleito, :conselho => @componente.conselho)
    else
      render :action => "edit"
    end
  end

  def destroy
    unless @componente.destroy
      flash[:error] = @componente.errors.on_base
    end
    redirect_to([@pleito, :empreendimento, :componentes_empreendimento])
  end

  private

  def get_not_nested
    @componente = ComponenteEmpreendimento.find(params[:id])
    @empreendimento = @componente.empreendimento
    @pleito = @empreendimento.pleito
  end

  def get_nested
    @pleito = Pleito.find(params[:pleito_id])
    @empreendimento = @pleito.empreendimento
    @pleito
  end

  def get_conselho
    @conselho = params[:conselho] ? true : false
  end

  def check_dates
    if params[:sem_mandato]
      params[:componente_empreendimento][:mandato_inicio] = params[:componente_empreendimento][:mandato_fim] = nil
    end
  end

end
